#include "StdAfx.h"
//-------------------------------------------------------------------------------------------------
//ImageProcStepAnalysis.cpp  - Image Processing Step Implementation - the step that writes the result to IEF         
//-------------------------------------------------------------------------------------------------
//FreeBSD License
//Copyright 2012 Will Stott All rights reserved.
//
//Redistribution and use in source and binary forms, with or without modification, are
//permitted provided that the following conditions are met:
//
//   1. Redistributions of source code must retain the above copyright notice, this list of
//      conditions and the following disclaimer.
//
//   2. Redistributions in binary form must reproduce the above copyright notice, this list
//      of conditions and the following disclaimer in the documentation and/or other materials
//      provided with the distribution.
//
//THIS SOFTWARE IS PROVIDED BY Will Stott ``AS IS'' AND ANY EXPRESS OR IMPLIED
//WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
//FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Will Stott OR
//CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
//CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
//SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
//ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
//ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//The views and conclusions contained in the software and documentation are those of the
//authors and should not be interpreted as representing official policies, either expressed
//or implied, of Will Stott.
//
//----Authors--------------------------------------------------------------------------------------
//created by: will.stott@ucl.ac.uk Feb 2012
//
//----Comments-------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------
#include "ImageExptLib.h"
#include "ImageProcStepAnalysis.h"


const char * const ImageProcStepAnalysis::NoScore = "Error: no score found";

ImageProcStepAnalysis::ImageProcStepAnalysis(void)
{
}

ImageProcStepAnalysis::ImageProcStepAnalysis(ImageProcStepAnalysis *step) :
	ImageProcStep(step)
{
}

ImageProcStepAnalysis::ImageProcStepAnalysis(int SeqNo) : 
	ImageProcStep(SeqNo)
{

}

ImageProcStepAnalysis::ImageProcStepAnalysis(TiXmlElement *processStep, ImageProcStepLibs *procLibs) : 
	ImageProcStep(processStep, procLibs)
{

}

ImageProcStepAnalysis::ImageProcStepAnalysis(int StepNo, IImageProcStepLibDyn *pLib, IImageProcFn *pFn, ProcParamsInputs *pInputs, ProcParamsOutputs *pOutputs) :  //this makes a copy of inputs and outputs, but lib and fn are shared amongst all ImpageProcSteps as they are readonly
	ImageProcStep(StepNo, pLib, pFn, pInputs, pOutputs)
{

}

ImageProcStepAnalysis::~ImageProcStepAnalysis(void)
{

}

const char *ImageProcStepAnalysis::GetScore()
{
	const char *rc = ImageProcStepAnalysis::NoScore;

	ProcParamsOutputs  *outputs = '\0';
	if ((outputs = GetOutputs()) == '\0')
		ImageExptLib::LogMsg("ImageProcStepAnalysis::SaveResultsToXml()", "ERROR: outputs not initialised");
	else
	{
		ProcParam *param = '\0';
		if ( (param = outputs->GetParam(IPluginICProcStepsParamAttribOutputNameScore)) == '\0')
			ImageExptLib::LogMsg("ImageProcStepAnalysis::SaveResultsToXml()", "ERROR: param %s not found", IPluginICProcStepsParamAttribOutputNameScore);
		else
		{
			rc = param->GetValueStr();
		}
	}
	return rc;
}

bool ImageProcStepAnalysis::SaveResultsToXml(TiXmlElement *image)
{
	bool rc = false;

	if (image == '\0')
		ImageExptLib::LogMsg("ImageProcStepAnalysis::SaveResultsToXml()", "ERROR: image is null" );
	else
	{
		ProcParamsOutputs  *outputs = '\0';
		if ((outputs = GetOutputs()) == '\0')
			ImageExptLib::LogMsg("ImageProcStepAnalysis::SaveResultsToXml()", "ERROR: outputs not initialised");
		else
		{
			ProcParam *param = '\0';
			if ( (param = outputs->GetParam(IPluginICProcStepsParamAttribOutputNameScore)) == '\0')
				ImageExptLib::LogMsg("ImageProcStepAnalysis::SaveResultsToXml()", "ERROR: param %s not found", IPluginICProcStepsParamAttribOutputNameScore);
			else
			{
				image->SetAttribute(IPluginICProcStepsParamAttribOutputNameScore, param->GetValueStr());
				rc = ImageProcStep::SaveResultsToXml(image);
			}
		}
	}
	return rc;
}

bool ImageProcStepAnalysis::SaveSettingsToXml(TiXmlElement *xmlProcSteps) 
{
	bool rc = false;

	rc = ImageProcStep::SaveSettingsToXml(xmlProcSteps); 

	return rc;
}

//-------------------------------------------------------------------------------------------------
//			E N D   O F   F I L E
//-------------------------------------------------------------------------------------------------
